#ifndef __WED_COMMON_H__
#define __WED_COMMON_H__

/* \brief 版本号 */
#define WED_VERSION                         "V0.0.1"

#define WED_TRUE                            1
#define WED_FALSE                           0
typedef int                                 wed_bool_t;

#define WED_WAITING_FOREVER                -1

#define WED_ALIGN(size, align)          (((size) + (align) - 1) & ~((align) - 1))

#define WED_ALIGN_DOWN(size, align)      ((size) & ~((align) - 1))

/* \brief 向上舍入，align 为对齐因素，必须为 2 的乘方，ROUND_UP(15, 4) = 16 */
#define WED_ALIGN_UP(x, align)         ((((x) + ((align) - 1)) / (align)) * (align))

/* \brief 判断一个数是否为 2 的 n 次方 */
#define IS_NOT_SECOND_PARTY(x)          (((x) & ((x) - 1)) ? 1 : 0)

/* \brief 计算数组元素个数 */
#define WED_NELEMENTS(array)              (sizeof(array) / sizeof((array)[0]))

#define WED_CONTAINER_OF(ptr, type, member) \
                                          ((type *)((char *)(ptr) - offsetof(type, member)))

#endif
